package com.jimikongjian.service.dao.impl;

import com.jimikongjian.dao.ILike;
import com.jimikongjian.models.Like;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by fuxiuyang on 17/3/4.
 */
@Service("iLikeImpl")
public class ILikeImpl implements ILike {

    @Autowired
//    @Qualifier("likeMapper")
    private ILike iLike;

    /**
     * 通过自身的id号，获取某一确定的收藏文章的信息
     *
     * @param id
     * @return List<Like>
     */
    public List<Like> getLikeListById(int id) {
        if (id > 0){
            return  iLike.getLikeListById(id);
        }
        return null;
    }

    /**
     * 通过自身的id号，获取某一确定的收藏文章的信息
     *
     * @param id
     * @return Like
     */
    public Like getLikeById(int id) {
        if (id > 0){
            List<Like> likeList = getLikeListById(id);
            if (likeList.size() > 0){
                return likeList.get(0);
            }
        }
        return null;
    }

    /**
     * 通过用户获取用户收藏的文章
     *
     * @param userId
     * @return List<Like>
     */
    public List<Like> getLikeListByUserId(int userId) {
        if (userId > 0){
            return iLike.getLikeListByUserId(userId);
        }
        return null;
    }

    /**
     * 通过用户id和文章id获取用户收藏的文章
     *
     * @param userId
     * @param articleId
     * @return List<Like>
     */
    @Override
    public List<Like> getLikeListByUserIdAndArticleId(int userId, int articleId) {
        if (userId > 0 && articleId > 0){
            return iLike.getLikeListByUserIdAndArticleId(userId, articleId);
        }
        return null;
    }

    /**
     * 判断用户是否已经收藏了该文章
     *
     * @param userId
     * @param articleId
     * @return
     */
    @Override
    public boolean hasLike(int userId, int articleId) {
        List list = getLikeListByUserIdAndArticleId(userId, articleId);
        if (list != null && list.size() > 0){
            return true;
        }
        return false;
    }

    /**
     * 通过文章的id获取收藏该文章的所有用户
     *
     * @param articleId
     * @return List<Like>
     */
    public List<Like> getLikeListByArticleId(int articleId) {
        if (articleId > 0){
            return iLike.getLikeListByArticleId(articleId);
        }
        return null;
    }

    /**
     * 增加一个收藏
     *
     * @param like
     */
    public void insertLike(Like like) {
        if (like.getUserId() > 0
                && like.getArticleId() > 0){
            iLike.insertLike(like);
        }
    }

    /**
     * 更新一个收藏
     *
     * @param like
     */
    public void updateLike(Like like) {
//        不允许更新，不喜欢可以直接删除
    }

    /**
     * 删除一个收藏
     *
     * @param like
     */
    public void deleteLike(Like like) {
        if (like.getUserId() > 0 && like.getArticleId() > 0){
            iLike.deleteLike(like);
        }
    }
}
